home *** CD-ROM | disk | FTP | other *** search
- //=============================================================================
- //
- // Copyright (C) 1995 by Paul S. McCarthy and Eric Sunshine.
- // Written by Paul S. McCarthy and Eric Sunshine.
- // All Rights Reserved.
- //
- // This notice may not be removed from this source code.
- //
- // This object is included in the MiscKit by permission from the authors
- // and its use is governed by the MiscKit license, found in the file
- // "License.rtf" in the MiscKit distribution. Please refer to that file
- // for a list of all applicable permissions and restrictions.
- //
- //=============================================================================
- //-----------------------------------------------------------------------------
- // MiscRadioTracker.M
- //
- // Radio-mode selection tracking.
- //
- //-----------------------------------------------------------------------------
- //-----------------------------------------------------------------------------
- // $Id: MiscRadioTracker.M,v 1.1 95/09/27 12:21:21 zarnuk Exp $
- // $Log: MiscRadioTracker.M,v $
- // Revision 1.1 95/09/27 12:21:21 zarnuk
- // Initial revision
- //
- //-----------------------------------------------------------------------------
- #import "MiscRadioTracker.h"
- #import "MiscSparseSet.h"
- #import "MiscTableBorder.h"
-
-
- @implementation MiscRadioTracker
-
- //-----------------------------------------------------------------------------
- // selectPos:
- //-----------------------------------------------------------------------------
- - (void) selectPos: (MiscCoord_V)pos
- {
- set->empty();
- set->add( pos );
- set->setCursor( pos );
- }
-
-
- //-----------------------------------------------------------------------------
- // mouseDown:atPos:
- //-----------------------------------------------------------------------------
- - (void) mouseDown: (NXEvent const*) event atPos: (MiscCoord_V) pos
- {
- [self selectPos: pos];
- }
-
-
- //-----------------------------------------------------------------------------
- // mouseDragged:atPos:
- //-----------------------------------------------------------------------------
- - (void) mouseDragged: (NXEvent const*) event atPos: (MiscCoord_V) pos
- {
- if (!set->isEmpty())
- set->empty();
- if (pos >= 0 && pos < border->count())
- {
- set->add( pos );
- set->setCursor( pos );
- }
- }
-
-
- //-----------------------------------------------------------------------------
- // mouseUp:atPos:
- //
- // NOTE: We emulate Matrix behavior here. In radio mode if the mouse goes
- // up and the shift key is held down then the cell is deselected.
- //-----------------------------------------------------------------------------
- - (void) mouseUp: (NXEvent const*) event atPos: (MiscCoord_V) pos
- {
- if (event->flags & NX_SHIFTMASK)
- if (pos >= 0 && pos < border->count() && set->contains( pos ))
- set->empty();
- }
-
-
- //-----------------------------------------------------------------------------
- // keyDown:atPos:
- //-----------------------------------------------------------------------------
- - (void) keyDown: (NXEvent const*) event atPos: (MiscCoord_V) pos
- {
- if (!set->isEmpty() && pos == set->getCursor())
- set->empty();
- else
- [self selectPos: pos];
- }
-
- @end
-